package com.doitedu.hbase.client;

import com.doitedu.hbase.utils.HbaseUtil;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;

import java.io.IOException;
import java.util.Arrays;

/**
 * @Date 2021/12/13
 * @Created by HANGGE
 * @Description
 * 建表   在创建表的时候 至少指定一个列族
 */
public class C06_CretaeTable01 {
    public static void main(String[] args) throws Exception {
        Connection conn = HbaseUtil.getConnection();
        Admin admin = HbaseUtil.getAdmin(conn);
        // 表构建器
        TableDescriptorBuilder tblb = TableDescriptorBuilder.newBuilder(TableName.valueOf("tb_order3"));
        // 列族一
        ColumnFamilyDescriptorBuilder cf1b = ColumnFamilyDescriptorBuilder.newBuilder("cf1".getBytes());
        // 参数的设置  版本
        //   过期时间
        cf1b.setMaxVersions(3);
        cf1b.setTimeToLive(60*60*4);
        ColumnFamilyDescriptor cf1 = cf1b.build();
         //列族二
        ColumnFamilyDescriptorBuilder cf2b = ColumnFamilyDescriptorBuilder.newBuilder("cf2".getBytes());
        ColumnFamilyDescriptor cf2 = cf2b.build();
        // 添加多个列族
        tblb.setColumnFamilies(Arrays.asList(cf1 , cf2)) ;
        // 建表
        TableDescriptor tbl = tblb.build();
        admin.createTable(tbl);
        admin.close();
        conn.close();

    }

    private static void createTable01(Admin admin) throws IOException {
        // 建表  create  'tb_order' , 'cf'
        /**
         * 2 表描述器构建器
         * 1 表描述器构建器 构建表描述器
         *   b.列族描述器构建器
         *   a.列族描述器构建器构建列族描述器
         */
        TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(TableName.valueOf("tb_order"));
        // 添加列族
        ColumnFamilyDescriptorBuilder columnFamilyDescriptorBuilder = ColumnFamilyDescriptorBuilder.newBuilder("cf1".getBytes());
        ColumnFamilyDescriptor columnFamilyDescriptor = columnFamilyDescriptorBuilder.build();
        /**
         * a.列族描述器构建器
         * b.列族描述器构建器构建列族描述器
         */
        tableDescriptorBuilder.setColumnFamily(columnFamilyDescriptor) ;
        TableDescriptor tableDescriptor = tableDescriptorBuilder.build();
        // 建表
        admin.createTable(tableDescriptor);
    }
}
